// pages/index/index.js
const db = wx.cloud.database()
let searchkey='';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    show:false,
    searchkey:'',//搜索词
    zhuohao:'',//桌号
    money:0,//总价
    num:0,//数量
    cart:[],//购物车数据
    foodlist:[]
  },
  //获取用户输入的内容
  searchkey(e){
    let cart = wx.getStorageSync('cart')
     searchkey = e.detail.value
    this.setData({
      searchkey:searchkey
    })
    this.search()
      console.log("搜索词",searchkey);
  },
  //搜索事件
  search(){
    let cart = wx.getStorageSync('cart')||[]
    console.log("触发了搜索",this.data.searchkey);
    if(this.data.searchkey){
      db.collection('food').where({//模糊搜索
        name: db.RegExp({
          regexp:searchkey,
          options: 'i'
        })
      }).get()
      .then(res=>{
        let list = res.data
        let searchkey = this.data.searchkey
        if(list.length==0){
          console.log("res.data",res.data.length);
          this.setData({
            foodlist:list
          })
          console.log("没有搜索到相关内容",searchkey);
          wx.showToast({
            icon:"none",
            title: '没有搜索到相关内容,请重新输入',
          })
        }
        console.log('搜索成功',res)
        if(list&&list.length>0){
          console.log(list);
          list.forEach((item) => {
            item.num = 0;
            cart.forEach((cart) => {
              if (cart._id == item._id) {
                item.num = cart.num ? cart.num : 0;
              }
            });
          });
          this.setData({
            foodlist:list
          })
        }
      })
      
    }else{
      // let cart = this.data.cart
      // console.log(cart);
      db.collection('food').get()
      .then(res=>{
        console.log('搜索成功',res);
        let list = res.data
        list.forEach(item => {
          item.num = 0;
          cart.forEach(cart => {
            if (cart._id == item._id) {
              item.num = cart.num ? cart.num : 0;
            }
          })
        })
          this.setData({
            foodlist:list,
          })
      }).catch(res=>{
        wx.showToast({
          icon:"none",
          title: '搜索失败',
        })
      })
    }
  },
  //加数量
  jia(e){
    let id = e.currentTarget.dataset.id
    // console.log("点击了加",e.currentTarget.dataset.id);
    let list = this.data.foodlist
    let money = this.data.money
    let num = this.data.num
    let cart = this.data.cart
    // console.log("当前菜品列表",list);
    list.forEach(item=>{//遍历数组
      // console.log("遍历了",list);
      if(item._id==id){//如果遍历到_id=id，则执行
        item.num+=1
          money+=item.price,
          num+=1
          if(cart&&cart.length>0){//判断购物车里面是否有这条菜品的数据如果有数量+1，否则添加到购物车
            var cartitem = cart.find((cart) => {
              return cart._id == id;
          })
          if(!cartitem){//判断购物车里面是否有这条菜品的数据如果有数量+1，否则添加到购物车
            cart.push(item)
          }
          }else{
            cart.push(item)
          }
      }
    })
    this.setData({
      foodlist:list,
      money:money,
      num:num,
      cart:cart
    })
    wx.setStorageSync('cart', cart)//将购物车数据存入缓存
    console.log("添加购物车的数据",cart);
  },
  //减数量
  jian(e){
    let id = e.currentTarget.dataset.id
    // console.log("点击了减",e.currentTarget.dataset.id);
    let list = this.data.foodlist
    let money = this.data.money
    let num = this.data.num
    let cart = this.data.cart
    // console.log("当前菜品列表",list);
    list.forEach(item=>{
      // console.log("遍历了",list);
      if(item._id==id){
        if(item.num>0){
          item.num-=1
            money-=item.price,
            num-=1
            if(cart&&cart.length>0){//判断购物车里面是否有这条菜品的数据如果有数量+1，否则添加到购物车
              var index = cart.findIndex((cart) => {//findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。
                return cart._id == id;
            })
            console.log("下标",index);
            if(item.num==0){//如果点击减少到数量为0，则移除cart数组
              // cart.pop(cartitem)//bug
              cart.splice(index,1)//根据下标删除数组中的元素
              if(this.data.cart.length==0){
                this.setData({
                  show:false
                })
              }
            }
            }
        }else{
          wx.showToast({
            icon:'none',
            title: '数量不能小于0',
          })
        }
      }
    })
    this.setData({
      foodlist:list,
      money:money,
      num:num,
      cart:cart
    })
    wx.setStorageSync('cart', cart)
    console.log("减少购物车的数据",cart);
  },
  cartshow(){
    if(this.data.cart.length>0){
      this.setData({
        show:true
      })
    }else{
      wx.showToast({
        icon:'none',
        title: '你还没有添加购物车',
      })
    }
    
  },
  cartnoshow(){
      this.setData({
        show:false
      })
  },
  //清空购物车
  clearcart(){
    wx.removeStorageSync('cart')//清除购物车缓存
    let foodlist = this.data.foodlist
    foodlist.forEach(item=>{
      item.num=0
    })
    this.setData({
      cart:[],
      foodlist:foodlist,
      money:0,
      num:0,
      show:false
    })
  },
  //购买
  buy(){
    let cart = this.data.cart
    console.log("执行了购买",cart);
    if(cart.length>0){
      wx.navigateTo({
        url: '/pages/buy/buy',
      })
    }else{
      wx.showToast({
        icon:'none',
        title: '你还没有添加购物车',
      })
    }
    
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // this.search()
    db.collection('food').get()
    .then(res=>{
      console.log('搜索成功',res);
      let list = res.data
      if(list&&list.length>0){
        list.forEach(item=>{
          item.num=0
        })
        this.setData({
          foodlist:list
        })
      }
    }).catch(res=>{
      wx.showToast({
        icon:"none",
        title: '搜索失败',
      })
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    // this.search()
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    //  this.search()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})